Model add/delete/update/list

Brightcells 7 年之前
父节点
当前提交
8aad026559
共有 4 个文件被更改,包括 147 次插入3 次删除
  1. 121 0
      api/model_views.py
  2. 8 1
      api/urls.py
  3. 17 1
      mch/models.py
  4. 1 1
      requirements.txt

+ 121 - 0
api/model_views.py

@@ -0,0 +1,121 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from __future__ import division
4
+
5
+import monetary
6
+from django_logit import logit
7
+from django_response import response
8
+from paginator import pagination
9
+
10
+from mch.models import AdministratorInfo, DistributorInfo, ModelInfo
11
+from utils.error.errno_utils import AdministratorStatusCode, ProductDistributorStatusCode, ProductModelStatusCode
12
+
13
+
14
+@logit
15
+def model_add(request):
16
+    model_name = request.POST.get('model_name', '')
17
+    model_full_name = request.POST.get('model_full_name', '')
18
+    image_path = request.POST.get('image_path', '')
19
+    factory_yuan = request.POST.get('factory_yuan', 1000)
20
+    integral = int(request.POST.get('integral', 100))
21
+
22
+    admin_id = request.session.get('admin_id')
23
+
24
+    try:
25
+        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
26
+    except AdministratorInfo.DoesNotExist:
27
+        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
28
+
29
+    ModelInfo.objects.create(
30
+        brand_id=administrator.brand_id,
31
+        model_name=model_name,
32
+        model_full_name=model_full_name,
33
+        image=image_path,
34
+        factory_yuan=factory_yuan,
35
+        factory_fee=monetary.Yuan2Fen(factory_yuan),
36
+        integral=integral,
37
+    )
38
+
39
+    return response(200, 'Model Add Success', u'型号添加成功')
40
+
41
+
42
+@logit
43
+def model_delete(request):
44
+    model_id = request.POST.get('model_id', '')
45
+
46
+    admin_id = request.session.get('admin_id')
47
+
48
+    try:
49
+        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
50
+    except AdministratorInfo.DoesNotExist:
51
+        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
52
+
53
+    try:
54
+        modelObj = ModelInfo.objects.get(brand_id=administrator.brand_id, model_id=model_id, status=True)
55
+    except ModelInfo.DoesNotExist:
56
+        return response(ProductModelStatusCode.MODEL_NOT_FOUND)
57
+
58
+    modelObj.status = False
59
+    modelObj.save()
60
+
61
+    return response(200, 'Model Delete Success', u'型号删除成功')
62
+
63
+
64
+@logit
65
+def model_update(request):
66
+    model_id = request.POST.get('model_id', '')
67
+    model_name = request.POST.get('model_name', '')
68
+    model_full_name = request.POST.get('model_full_name', '')
69
+    image_path = request.POST.get('image_path', '')
70
+    factory_yuan = request.POST.get('factory_yuan', 1000)
71
+    integral = int(request.POST.get('integral', 100))
72
+
73
+    admin_id = request.session.get('admin_id')
74
+
75
+    try:
76
+        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
77
+    except AdministratorInfo.DoesNotExist:
78
+        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
79
+
80
+    try:
81
+        modelObj = ModelInfo.objects.get(brand_id=administrator.brand_id, model_id=model_id, status=True)
82
+    except ModelInfo.DoesNotExist:
83
+        return response(ProductModelStatusCode.MODEL_NOT_FOUND)
84
+
85
+    if model_name:
86
+        modelObj.model_name = model_name
87
+    if model_full_name:
88
+        modelObj.model_full_name = model_full_name
89
+    if image_path:
90
+        modelObj.distributor_province_name = image_path
91
+    if factory_yuan:
92
+        modelObj.factory_yuan = factory_yuan
93
+        modelObj.factory_fee = monetary.Yuan2Fen(factory_yuan)
94
+    if integral:
95
+        modelObj.integral = integral
96
+
97
+    modelObj.save()
98
+
99
+    return response(200, 'Model Update Success', u'型号更新成功')
100
+
101
+
102
+@logit
103
+def model_list(request):
104
+    page = request.POST.get('page', 1)
105
+    num = request.POST.get('num', 20)
106
+
107
+    admin_id = request.session.get('admin_id')
108
+
109
+    try:
110
+        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
111
+    except AdministratorInfo.DoesNotExist:
112
+        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
113
+
114
+    models = ModelInfo.objects.filter(brand_id=administrator.brand_id, status=True)
115
+    models, left = pagination(models, page, num)
116
+    models = [mdl.admindata for mdl in models]
117
+
118
+    return response(200, 'Get Model List Success', u'获取型号列表成功', {
119
+        'models': models,
120
+        'left': left,
121
+    })

+ 8 - 1
api/urls.py

@@ -5,7 +5,7 @@ from django_file_upload import views as file_views
5 5
 
6 6
 from account import tourguide_views
7 7
 from account import views as account_views
8
-from api import distributor_views, encrypt_views, mch_views, operator_views
8
+from api import distributor_views, encrypt_views, mch_views, model_views, operator_views
9 9
 from box import views as box_views
10 10
 from geo import views as geo_views
11 11
 from group import (groupuser_views, lensman_views, tourguidegroup_views, tourguidegroupadmin_views,
@@ -242,6 +242,13 @@ urlpatterns += [
242 242
 ]
243 243
 
244 244
 urlpatterns += [
245
+    url(r'^model/add$', model_views.model_add, name='model_add'),
246
+    url(r'^model/delete$', model_views.model_delete, name='model_delete'),
247
+    url(r'^model/update$', model_views.model_update, name='model_update'),
248
+    url(r'^model/list$', model_views.model_list, name='model_list'),
249
+]
250
+
251
+urlpatterns += [
245 252
     url(r'^distributor/add$', distributor_views.distributor_add, name='distributor_add'),
246 253
     url(r'^distributor/delete$', distributor_views.distributor_delete, name='distributor_delete'),
247 254
     url(r'^distributor/update$', distributor_views.distributor_update, name='distributor_update'),

+ 17 - 1
mch/models.py

@@ -2,7 +2,7 @@
2 2
 
3 3
 from django.db import models
4 4
 from django.utils.translation import ugettext_lazy as _
5
-from django_models_ext import BaseModelMixin, ProvinceShortModelMixin, upload_file_url, upload_path
5
+from django_models_ext import BaseModelMixin, ProvinceShortModelMixin, upload_file_path, upload_file_url, upload_path
6 6
 from shortuuidfield import ShortUUIDField
7 7
 
8 8
 
@@ -134,6 +134,10 @@ class ModelInfo(BaseModelMixin):
134 134
         return unicode(self.pk)
135 135
 
136 136
     @property
137
+    def image_path(self):
138
+        return upload_file_path(self.image)
139
+
140
+    @property
137 141
     def image_url(self):
138 142
         return upload_file_url(self.image)
139 143
 
@@ -158,6 +162,18 @@ class ModelInfo(BaseModelMixin):
158 162
         # imgs = ModelImageInfo.objects.filter(model_id=self.model_id, status=True)
159 163
         # return [img.data for img in imgs]
160 164
 
165
+    @property
166
+    def admindata(self):
167
+        return {
168
+            'model_id': self.model_id,
169
+            'model_name': self.model_name,
170
+            'model_full_name': self.model_full_name,
171
+            'image_path': self.image_path,
172
+            'image_url': self.image_url,
173
+            'factory_yuan': self.factory_yuan,
174
+            'integral': self.integral,
175
+        }
176
+
161 177
 
162 178
 class ModelImageInfo(BaseModelMixin):
163 179
     model_id = models.CharField(_(u'model_id'), max_length=32, blank=True, null=True, help_text=u'型号唯一标识', db_index=True)

+ 1 - 1
requirements.txt

@@ -15,7 +15,7 @@ django-json-render==1.0.0
15 15
 django-json-response==1.1.5
16 16
 django-logit==1.1.2
17 17
 django-mobi==0.1.7
18
-django-models-ext==1.1.4
18
+django-models-ext==1.1.6
19 19
 django-multidomain==1.1.4
20 20
 django-paginator2==1.0.3
21 21
 django-redis-connector==1.0.1